import axios, {AxiosRequestConfig} from 'axios'
import {store} from "@/store";
import router from "@/router";

const request = axios.create({
    /*baseURL: import.meta.env.VITE_API_BASEURL*/
})

// 添加请求拦截器
request.interceptors.request.use(function (config) {
    // 设置用户token
    const token = store.state.token
    if (token != '') {
        config.headers.Authorization = `Bearer ${token}`
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
    // 处理接口响应错误
    if (response.data.code == 101) {
        router.push("/login")
        return Promise.reject(response.data.msg)
    }
    return response;
}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
});

//将返回的数据转为泛型T
//调用方式
/*
request<T>({
    method: 'GET',
    url: '/'
})
*/
export default <T = any>(config: AxiosRequestConfig) => {
    return request(config).then(res => {
            return res.data as T
        }
    )
}

